﻿#define _CRT_SECURE_NO_WARNINGS 1



//#include <stdio.h>
//#include <string.h>
//#include <unistd.h>
//#include <sys/types.h>
//#include <sys/wait.h>
//
//void writer(int wfd)
//{
//	const char* str = "hello father, I am child";
//	char buffer[128];
//	int cnt = 0;
//	pid_t pid = getpid();
//	while (1)
//	{
//		snprintf(buffer, sizeof(buffer), "message: %s, pid: %d, count: %d\n", str, pid, cnt);
//		write(wfd, buffer, strlen(buffer));
//		cnt++;
//		sleep(1);
//	}
//}
//void reader(int rfd)
//{
//	char buffer[1024];
//	while (1)
//	{
//		ssize_t n = read(rfd, buffer, sizeof(buffer) - 1);
//		(void)n;
//		printf("father get a message: %s", buffer);
//	}
//}
//
//int main()
//{
//	//1，输出管道创建文件描述符数组的读端和写端
//	int pipefd[2];
//	int n = pipe(pipefd);
//	if (n < 0)
//	{
//		return 1;
//	}
//	printf("pipefd[0]: %d, pipefd[1]: %d\n", pipefd[0]/*read*/, pipefd[1]/*write*/);// 3, 4
//
//	//2，查看父子进程间的通信
//	pid_t id = fork();
//	if (id == 0)
//	{
//		//child: write
//		close(pipefd[0]);
//		writer(pipefd[1]);
//		exit(0);
//	}
//	//father: read
//	close(pipefd[1]);
//	reader(pipefd[0]);
//	wait(NULL);
//	return 0;
//}


//class Solution {
//public:
//    /**
//     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//     *
//     *
//     * @param m int整型vector<vector<>>
//     * @return int整型
//     */
//    int citys(vector<vector<int> >& m)
//    {
//        int count = 0;
//        int n = m.size();
//        set<int> s;
//        for (int i = 0; i < n; i++)
//        {
//            for (int j = i + 1; j < n; j++)
//            {
//                if (m[i][j] == 1)
//                {
//                    if (s.count(i + 1) == 0 && s.count(j + 1) == 0)
//                    {
//                        count++;
//                    }
//                    s.insert(i + 1);
//                    s.insert(j + 1);
//                }
//            }
//        }
//        //独立的部分
//        set<int>::iterator it = s.begin();
//        int x = 1;
//        while (x <= n)
//        {
//            if (it != s.end() && *it == x)
//            {
//                x++;
//                it++;
//            }
//            else
//            {
//                count++;
//                x++;
//            }
//        }
//        return count;
//    }
//};

